package com.edu.test;
/*
 * @Author:princess
 * @Date 2023/10/30 10 30 19:50
 *
 */

 import com.edu.handler.LogHandler;
import com.edu.service.UserService;
import com.edu.service.impl.UserServiceImpl;

import java.lang.reflect.Proxy;

public class MyTest2 {
    /*
        动态代理之jdk动态代理，本质上是 动态的生成了一个 和 被代理对象 实现了同样的接口的 代理对象
     */
    public static void main(String[] args) {
        //被代理对象
        UserService us = new UserServiceImpl();
        /*
            参数1 被代理对象的 类加载器
            参数2 被代理对象 实现的接口
            参数3 传入一个调度处理器（告知 如何去进行增强）
         */
        UserService userService = (UserService) Proxy.newProxyInstance(us.getClass().getClassLoader(), us.getClass().getInterfaces(), new LogHandler(us));
        System.out.println(userService.getClass());
        userService.addUser();
        userService.deleteUser();
        userService.updateUser();
        userService.selectUser();
    }
}
